package xml;


import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import java.util.Iterator;

/**
 * @author xiaoming
 * @version 1.0
 * @date 2019/1/4 22:16
 **/
public class dom4j {
    public static void main(String[] args) {
        // 创建XML对象
        createDoc();
        // 字符串解析XML
        parseString();

    }

    /**
     * 解析XML字符串
     */
    public static void parseString() {
        String xmlStr = "<result id='root'>"
                + "<code>1</code>"
                + "<msg>好消息</msg>"
                + "<data><aa>aaa</aa></data>"
                + "</result>";
        try {
            // 从xml字符串解析
            Document doc = DocumentHelper.parseText(xmlStr);
            // 获取根节点
            Element root =  doc.getRootElement();
            // 获取根节点下指定节点
            Element msg = root.element("msg");
            /*
             获取节点内容
             输出: 好消息
              */
            System.out.println(msg.getText());

            /*
            不能直接获取深层次的指定节点
            输出: NullPointerException
             */
            // System.out.println(root.element("aa").getText());
            // 输出: aaa
            System.out.println( root.element("data").element("aa").getText() );

            // 迭代 root
            /*
            只会迭代一级子节点
            输出:  code ,msg ,data
             */
            System.out.println("-----====--迭代--=====");
            for (Iterator<Element> it = root.elementIterator(); it.hasNext();) {
                Element aa = it.next();
                if ("aa".equals(aa.getName())) {
                    System.out.println(aa.getText());
                } else {
                    System.out.println(aa.getName());
                }
            }
            System.out.println("-----====-- asXML >>> String--=====");
            System.out.println(doc.asXML());


        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }

    private static void createDoc() {
        Document doc = DocumentHelper.createDocument();
        // 添加节点
        Element root = doc.addElement("result");
        // 添加属性
        root.addAttribute("id", "root");
        root.addElement("code").addText("1");

        System.out.println(doc.asXML());

    }

}
